package cc.rengu.redp.flowable.bizrule.rule;

import cc.rengu.redp.flowable.bizrule.commander.SpClassMember;
import com.alibaba.fastjson.JSONObject;

/**
 * 业务规则校验定义接口
 * @author xushitang
 *
 */
public interface BusiRule extends SpClassMember {
	/**
	 * 当无法获取validateJson或validateJson为空时，规则处理模块会尝试执行此方法
	 * @param requestJson
	 */
	JSONObject getValidateData(JSONObject requestJson);
	
	/**
	 * validateData执行前的公共处理
	 * @param validateJson
	 * @return
	 */
	void dataPreHandle(JSONObject validateJson);

    /**
     * 在检验数据前先检查本规则是否适用当前业务场景
     *
     * @param validateJson
     * @return
     */
    RuleResult checkSuitable(JSONObject validateJson);
	
	/**
	 * 校验业务数据是否符合完成节点任务要求
	 * @param validateJson
	 * @return
	 */
	RuleResult validateData(JSONObject validateJson);
	
	/**
	 * 返回规则名称前缀
	 * @return
	 */
	String getRulePrefix();
}
